

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  
  <title>OSD 开发者文档 &mdash; Ceph Documentation</title>
  

  
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />

  
  

  
  

  

  
  <!--[if lt IE 9]>
    <script src="../../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/jquery.js"></script>
        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/doctools.js"></script>
        <script src="../../_static/sphinx_highlight.js"></script>
    
    <script type="text/javascript" src="../../_static/js/theme.js"></script>

    
    <link rel="index" title="Index" href="../../genindex/" />
    <link rel="search" title="Search" href="../../search/" />
    <link rel="next" title="异步恢复" href="async_recovery/" />
    <link rel="prev" title="Zoned Storage Support" href="../zoned-storage/" /> 
</head>

<body class="wy-body-for-nav">

   
  <header class="top-bar">
    <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../../" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="../internals/">Ceph 内幕</a></li>
      <li class="breadcrumb-item active">OSD 开发者文档</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../../_sources/dev/osd_internals/index.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
  </header>
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search"  style="background: #eee" >
          

          
            <a href="../../" class="icon icon-home"> Ceph
          

          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../search/" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../start/">Ceph 简介</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../install/">安装 Ceph</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephadm/">Cephadm</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rados/">Ceph 存储集群</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephfs/">Ceph 文件系统</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rbd/">Ceph 块设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../radosgw/">Ceph 对象网关</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mgr/">Ceph 管理器守护进程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mgr/dashboard/">Ceph 仪表盘</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../monitoring/">监控概览</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/">API 文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../architecture/">体系结构</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developer_guide/">开发者指南</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../internals/">Ceph 内幕</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../balancer-design/">Ceph 如何均衡（读写、容量）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../blkin/">Tracing Ceph With LTTng</a></li>
<li class="toctree-l2"><a class="reference internal" href="../blkin/#tracing-ceph-with-blkin">Tracing Ceph With Blkin</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bluestore/">BlueStore Internals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph_krb_auth/">如何配置好 Ceph Kerberos 认证的详细文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-mirroring/">CephFS Mirroring</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-reclaim/">CephFS Reclaim Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephfs-snapshots/">CephFS 快照</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephx/">Cephx</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cephx_protocol/">Cephx 认证协议详细阐述</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config/">配置管理系统</a></li>
<li class="toctree-l2"><a class="reference internal" href="../config-key/">config-key layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="../context/">CephContext</a></li>
<li class="toctree-l2"><a class="reference internal" href="../continuous-integration/">Continuous Integration Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../corpus/">资料库结构</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpu-profiler/">Oprofile 的安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="../crush-msr/">CRUSH MSR (Multi-step Retry)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cxx/">C++17 and libstdc++ ABI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../deduplication/">去重</a></li>
<li class="toctree-l2"><a class="reference internal" href="../delayed-delete/">CephFS delayed deletion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dev_cluster_deployment/">开发集群的部署</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dev_cluster_deployment/#id5">在同一机器上部署多套开发集群</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development-workflow/">开发流程</a></li>
<li class="toctree-l2"><a class="reference internal" href="../documenting/">为 Ceph 写作文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dpdk/">Ceph messenger DPDKStack</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encoding/">序列化（编码、解码）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../erasure-coded-pool/">纠删码存储池</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file-striping/">File striping</a></li>
<li class="toctree-l2"><a class="reference internal" href="../freebsd/">FreeBSD Implementation details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../generatedocs/">Ceph 文档的构建</a></li>
<li class="toctree-l2"><a class="reference internal" href="../health-reports/">Health Reports</a></li>
<li class="toctree-l2"><a class="reference internal" href="../iana/">IANA 号</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kclient/">Testing changes to the Linux Kernel CephFS driver</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kclient/#step-one-build-the-kernel">Step One: build the kernel</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kclient/#step-two-create-a-vm">Step Two: create a VM</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kclient/#step-three-networking-the-vm">Step Three: Networking the VM</a></li>
<li class="toctree-l2"><a class="reference internal" href="../kubernetes/">Hacking on Ceph in Kubernetes with Rook</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libcephfs_proxy/">Design of the libcephfs proxy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../libs/">库体系结构</a></li>
<li class="toctree-l2"><a class="reference internal" href="../logging/">集群日志的用法</a></li>
<li class="toctree-l2"><a class="reference internal" href="../logs/">调试日志</a></li>
<li class="toctree-l2"><a class="reference internal" href="../macos/">在 MacOS 上构建</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mempool_accounting/">What is a mempool?</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mempool_accounting/#some-common-mempools-that-we-can-track">Some common mempools that we can track</a></li>
<li class="toctree-l2"><a class="reference internal" href="../messenger/">Messenger notes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-bootstrap/">Monitor bootstrap</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-elections/">Monitor Elections</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-on-disk-formats/">ON-DISK FORMAT</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mon-osdmap-prune/">FULL OSDMAP VERSION PRUNING</a></li>
<li class="toctree-l2"><a class="reference internal" href="../msgr2/">msgr2 协议（ msgr2.0 和 msgr2.1 ）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../network-encoding/">Network Encoding</a></li>
<li class="toctree-l2"><a class="reference internal" href="../network-protocol/">网络协议</a></li>
<li class="toctree-l2"><a class="reference internal" href="../object-store/">对象存储架构概述</a></li>
<li class="toctree-l2"><a class="reference internal" href="../osd-class-path/">OSD class path issues</a></li>
<li class="toctree-l2"><a class="reference internal" href="../peering/">互联</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf/">Using perf</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf_counters/">性能计数器</a></li>
<li class="toctree-l2"><a class="reference internal" href="../perf_histograms/">Perf histograms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../placement-group/">PG （归置组）说明</a></li>
<li class="toctree-l2"><a class="reference internal" href="../quick_guide/">开发者指南（快速）</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rados-client-protocol/">RADOS 客户端协议</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-diff/">RBD 增量备份</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-export/">RBD Export &amp; Import</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rbd-layering/">RBD Layering</a></li>
<li class="toctree-l2"><a class="reference internal" href="../release-checklists/">Release checklists</a></li>
<li class="toctree-l2"><a class="reference internal" href="../release-process/">Ceph Release Process</a></li>
<li class="toctree-l2"><a class="reference internal" href="../seastore/">SeaStore</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sepia/">Sepia 社区测试实验室</a></li>
<li class="toctree-l2"><a class="reference internal" href="../session_authentication/">Session Authentication for the Cephx Protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/">测试笔记</a></li>
<li class="toctree-l2"><a class="reference internal" href="../versions/">Public OSD Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vstart-ganesha/">NFS CephFS-RGW Developer Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../wireshark/">Wireshark Dissector</a></li>
<li class="toctree-l2"><a class="reference internal" href="../zoned-storage/">Zoned Storage Support</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">OSD 开发者文档</a><ul>
<li class="toctree-l3"><a class="reference internal" href="async_recovery/">异步恢复</a></li>
<li class="toctree-l3"><a class="reference internal" href="backfill_reservation/">Backfill Reservation</a></li>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/">纠删码编码的归置组</a></li>
<li class="toctree-l3"><a class="reference internal" href="last_epoch_started/">last_epoch_started</a></li>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/">Log Based PG</a></li>
<li class="toctree-l3"><a class="reference internal" href="manifest/">Manifest</a></li>
<li class="toctree-l3"><a class="reference internal" href="map_message_handling/">Map and PG Message handling</a></li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/">QoS Study with mClock and WPQ Schedulers</a></li>
<li class="toctree-l3"><a class="reference internal" href="osd_overview/">OSD</a></li>
<li class="toctree-l3"><a class="reference internal" href="partial_object_recovery/">Partial Object Recovery</a></li>
<li class="toctree-l3"><a class="reference internal" href="past_intervals/">OSDMap Trimming and PastIntervals</a></li>
<li class="toctree-l3"><a class="reference internal" href="pg/">PG</a></li>
<li class="toctree-l3"><a class="reference internal" href="pg_removal/">PG Removal</a></li>
<li class="toctree-l3"><a class="reference internal" href="pgpool/">PGPool</a></li>
<li class="toctree-l3"><a class="reference internal" href="recovery_reservation/">Recovery Reservation</a></li>
<li class="toctree-l3"><a class="reference internal" href="refcount/">Refcount</a></li>
<li class="toctree-l3"><a class="reference internal" href="scrub/">Scrub internals and diagnostics</a></li>
<li class="toctree-l3"><a class="reference internal" href="snaps/">快照</a></li>
<li class="toctree-l3"><a class="reference internal" href="stale_read/">Preventing Stale Reads</a></li>
<li class="toctree-l3"><a class="reference internal" href="watch_notify/">关注通知</a></li>
<li class="toctree-l3"><a class="reference internal" href="wbthrottle/">回写抑制</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../mds_internals/">MDS 开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../radosgw/">RADOS 网关开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph-volume/">ceph-volume 开发者文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../crimson/">Crimson developer documentation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../governance/">项目管理</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../foundation/">Ceph 基金会</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ceph-volume/">ceph-volume</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/general/">Ceph 版本（总目录）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/">Ceph 版本（索引）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../security/">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../hardware-monitoring/">硬件监控</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary/">Ceph 术语</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../jaegertracing/">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../translation_cn/">中文版翻译资源</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../">Ceph</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
<div id="dev-warning" class="admonition note">
  <p class="first admonition-title">Notice</p>
  <p class="last">This document is for a development version of Ceph.</p>
</div>
  <div id="docubetter" align="right" style="padding: 5px; font-weight: bold;">
    <a href="https://pad.ceph.com/p/Report_Documentation_Bugs">Report a Documentation Bug</a>
  </div>

  
  <section id="osd">
<h1>OSD 开发者文档<a class="headerlink" href="#osd" title="Permalink to this heading"></a></h1>
<p class="rubric">内容目录</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="async_recovery/">异步恢复</a></li>
<li class="toctree-l1"><a class="reference internal" href="backfill_reservation/">Backfill Reservation</a></li>
<li class="toctree-l1"><a class="reference internal" href="erasure_coding/">纠删码编码的归置组</a><ul>
<li class="toctree-l2"><a class="reference internal" href="erasure_coding/#id2">术语</a></li>
<li class="toctree-l2"><a class="reference internal" href="erasure_coding/#id3">内容列表</a><ul>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/developer_notes/">开发者注意事项</a><ul>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/developer_notes/#introduction">Introduction</a></li>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/developer_notes/#reading-and-writing-encoded-chunks-from-and-to-osds">Reading and writing encoded chunks from and to OSDs</a></li>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/developer_notes/#erasure-code-library">Erasure code library</a></li>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/developer_notes/#notes">Notes</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/jerasure/">Jerasure 插件</a><ul>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/jerasure/#id1">简介</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/ecbackend/">ECBackend 实现策略</a><ul>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/ecbackend/#id1">设计初稿的各种起因</a><ul>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#pgtemp-and-crush">PGTemp and Crush</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#distinguished-acting-set-positions">Distinguished acting set positions</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#object-classes">Object Classes</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#scrub">Scrub</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#crush">Crush</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/ecbackend/#id2">ECBackend</a><ul>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/ecbackend/#main-operation-overview">MAIN OPERATION OVERVIEW</a><ul>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#whole-stripe-write">WHOLE STRIPE WRITE</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#read-modify-write">READ-MODIFY-WRITE</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#osd-object-write-and-consistency">OSD Object Write and Consistency</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#extentcache">ExtentCache</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/ecbackend/#pipeline">Pipeline</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="erasure_coding/enhancements/">纠删码增强设计文档</a><ul>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/enhancements/#objectives">Objectives</a><ul>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#current-read-implementation">Current Read Implementation</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#partial-reads">Partial Reads</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#current-overwrite-implementation">Current Overwrite Implementation</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#partial-overwrites">Partial Overwrites</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#parity-delta-write">Parity-delta-write</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-read-i-o">Direct Read I/O</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#distributed-processing-of-writes">Distributed processing of writes</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-write-i-o">Direct Write I/O</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#larger-chunk-size">Larger chunk size</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/enhancements/#design">Design</a><ul>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools">Test tools</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#i-o-path-changes">I/O path changes</a><ul>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#avoid-unnecessary-reads-and-writes">Avoid unnecessary reads and writes</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#id1">Parity-delta-write</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#direct-reads">Direct reads</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#direct-writes">Direct writes</a><ul>
<li class="toctree-l7"><a class="reference internal" href="erasure_coding/enhancements/#i-o-serialization-recovery-backfill-and-other-error-scenarios">I/O serialization, recovery/backfill and other error scenarios</a></li>
</ul>
</li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#stripe-cache">Stripe cache</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#automatically-choose-chunk-size">Automatically choose chunk size</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#deep-scrub-support">Deep scrub support</a></li>
</ul>
</li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#metadata-changes">Metadata changes</a><ul>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#how-many-copies-of-metadata-are-required">How many copies of metadata are required?</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#m-1-arbitrarily-distributed-copies">M+1 arbitrarily distributed copies</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#m-1-copies-on-known-shards">M+1 copies on known shards</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#partial-writes-and-the-pg-log">Partial Writes and the PG log</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#backfill">Backfill</a><ul>
<li class="toctree-l7"><a class="reference internal" href="erasure_coding/enhancements/#code-references">Code references</a></li>
</ul>
</li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#version-number-and-last-modification-time-for-clients">Version number and last modification time for clients</a></li>
<li class="toctree-l6"><a class="reference internal" href="erasure_coding/enhancements/#direct-write-with-metadata-updates">Direct Write with Metadata updates</a></li>
</ul>
</li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#upgrade-and-backwards-compatibility">Upgrade and backwards compatibility</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#not-under-consideration">Not under consideration</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="erasure_coding/enhancements/#stories">Stories</a><ul>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools-enhanced-i-o-generator-for-testing-erasure-coding">Test tools - enhanced I/O generator for testing erasure coding</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools-offline-consistency-checking-tool">Test tools - offline consistency checking tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools-online-consistency-checking-tool">Test tools - online consistency checking tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#switch-for-jerasure-to-isa-l">Switch for JErasure to ISA-L</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#sub-stripe-reads">Sub Stripe Reads</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#simple-optimizations-to-overwrite">Simple Optimizations to Overwrite</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#eliminate-unnecessary-chunk-writes-but-keep-metadata-transactions">Eliminate unnecessary chunk writes but keep metadata transactions</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#avoid-zero-padding-objects-to-a-full-stripe">Avoid zero padding objects to a full stripe</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#erasure-coding-plugin-changes-to-support-distributed-partial-writes">Erasure coding plugin changes to support distributed partial writes</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#erasure-coding-interface-to-allow-rados-clients-to-direct-i-os-to-osd-storing-the-data">Erasure coding interface to allow RADOS clients to direct I/Os to OSD storing the data</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#changes-to-object-info-t">Changes to object_info_t</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#changes-to-pglog-and-peering-to-support-updating-a-subset-of-osds">Changes to PGLog and Peering to support updating a subset of OSDs</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#change-to-selection-of-acting-primary">Change to selection of (acting) primary</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#implement-parity-delta-write-with-all-computation-on-the-primary">Implement parity-delta-write with all computation on the primary</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#upgrades-and-backwards-compatibility">Upgrades and backwards compatibility</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#changes-to-backfill-to-use-the-vector-in-object-info-t">Changes to Backfill to use the vector in object_info_t</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools-offline-metadata-validation-tool">Test tools - offline metadata validation tool</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#eliminate-transactions-on-osds-not-updating-data-chunks">Eliminate transactions on OSDs not updating data chunks</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-reads-to-osds-single-chunk-only">Direct reads to OSDs (single chunk only)</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-reads-to-osds-multiple-chunks">Direct reads to OSDs (multiple chunks)</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#implement-distributed-parity-delta-write">Implement distributed parity-delta-write</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#test-tools-ec-error-injection-thrasher">Test tools - EC error injection thrasher</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#implement-prefetch-message-mosdecsubopprefetch-and-modify-extent-cache">Implement prefetch message MOSDEcSubOpPrefetch and modify extent cache</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#implement-sequencing-message-mosdecsubopsequence">Implement sequencing message MOSDEcSubOpSequence</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-writes-to-osd-single-chunk-only">Direct writes to OSD (single chunk only)</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#direct-writes-to-osd-multiple-chunks">Direct writes to OSD (multiple chunks)</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#deep-scrub-crc">Deep scrub / CRC</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#variable-chunk-size-erasure-coding">Variable chunk size erasure coding</a></li>
<li class="toctree-l5"><a class="reference internal" href="erasure_coding/enhancements/#clay-erasure-codes">CLAY Erasure Codes</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="last_epoch_started/">last_epoch_started</a></li>
<li class="toctree-l1"><a class="reference internal" href="log_based_pg/">Log Based PG</a><ul>
<li class="toctree-l2"><a class="reference internal" href="log_based_pg/#background">Background</a><ul>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#why-primarylogpg">Why PrimaryLogPG?</a></li>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#primary-log-based-replication">Primary log-based replication</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="log_based_pg/#replicatedbackend-ecbackend-unification-strategy">ReplicatedBackend/ECBackend unification strategy</a><ul>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#pgbackend">PGBackend</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="log_based_pg/#pgbackend-interface-explanation">PGBackend Interface Explanation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#readable-vs-degraded">Readable vs Degraded</a></li>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#client-reads">Client Reads</a></li>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#scrubs">Scrubs</a></li>
<li class="toctree-l3"><a class="reference internal" href="log_based_pg/#recovery">Recovery</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="manifest/">Manifest</a><ul>
<li class="toctree-l2"><a class="reference internal" href="manifest/#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#intended-usage-model">Intended Usage Model</a><ul>
<li class="toctree-l3"><a class="reference internal" href="manifest/#rbd">RBD</a></li>
<li class="toctree-l3"><a class="reference internal" href="manifest/#radosgw">RadosGW</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#status-and-future-work">Status and Future Work</a><ul>
<li class="toctree-l3"><a class="reference internal" href="manifest/#cleanups">Cleanups</a></li>
<li class="toctree-l3"><a class="reference internal" href="manifest/#testing">Testing</a></li>
<li class="toctree-l3"><a class="reference internal" href="manifest/#snapshots">Snapshots</a></li>
<li class="toctree-l3"><a class="reference internal" href="manifest/#cache-tiering">Cache/Tiering</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#data-structures">Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#request-handling">Request Handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#rados-interface">RADOS Interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="manifest/#ceph-dedup-tool">ceph-dedup-tool</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="map_message_handling/">Map and PG Message handling</a><ul>
<li class="toctree-l2"><a class="reference internal" href="map_message_handling/#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="map_message_handling/#mosdmap">MOSDMap</a></li>
<li class="toctree-l2"><a class="reference internal" href="map_message_handling/#mosdpgop-mosdpgsubop">MOSDPGOp/MOSDPGSubOp</a></li>
<li class="toctree-l2"><a class="reference internal" href="map_message_handling/#ceph-msg-osd-op-processing">CEPH_MSG_OSD_OP processing</a></li>
<li class="toctree-l2"><a class="reference internal" href="map_message_handling/#peering-messages">Peering Messages</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mclock_wpq_cmp_study/">QoS Study with mClock and WPQ Schedulers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#test-environment">Test Environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#test-methodology">Test Methodology</a></li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#establish-baseline-client-throughput-iops">Establish Baseline Client Throughput (IOPS)</a></li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#mclock-profile-allocations">MClock Profile Allocations</a><ul>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#high-client-ops-default">high_client_ops(default)</a></li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#balanced">balanced</a></li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#high-recovery-ops">high_recovery_ops</a></li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#custom">custom</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#recovery-test-steps">Recovery Test Steps</a><ul>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#test-steps-using-cbt">Test Steps(Using cbt)</a></li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#non-default-ceph-recovery-options">Non-Default Ceph Recovery Options</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#test-results">Test Results</a><ul>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#test-results-with-nvme-ssds">Test Results With NVMe SSDs</a><ul>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#client-throughput-comparison">Client Throughput Comparison</a></li>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#client-latency-comparison">Client Latency Comparison</a></li>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#recovery-statistics-comparison">Recovery Statistics Comparison</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#test-results-with-hdds-wal-and-db-configured">Test Results With HDDs (WAL and dB configured)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#client-throughput-latency-comparison">Client Throughput &amp; latency Comparison</a></li>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#id1">Recovery Statistics Comparison</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="mclock_wpq_cmp_study/#test-results-with-hdds-no-wal-and-db-configured">Test Results With HDDs (No WAL and dB configured)</a><ul>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#id2">Client Throughput &amp; latency Comparison</a></li>
<li class="toctree-l4"><a class="reference internal" href="mclock_wpq_cmp_study/#id3">Recovery Statistics Comparison</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="mclock_wpq_cmp_study/#key-takeaways-and-conclusion">Key Takeaways and Conclusion</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="osd_overview/">OSD</a><ul>
<li class="toctree-l2"><a class="reference internal" href="osd_overview/#concepts">Concepts</a></li>
<li class="toctree-l2"><a class="reference internal" href="osd_overview/#overview">Overview</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="partial_object_recovery/">Partial Object Recovery</a><ul>
<li class="toctree-l2"><a class="reference internal" href="partial_object_recovery/#procedures-for-partial-object-recovery">Procedures for Partial Object Recovery</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="past_intervals/">OSDMap Trimming and PastIntervals</a><ul>
<li class="toctree-l2"><a class="reference internal" href="past_intervals/#pastintervals">PastIntervals</a></li>
<li class="toctree-l2"><a class="reference internal" href="past_intervals/#maintenance-and-trimming">Maintenance and Trimming</a></li>
<li class="toctree-l2"><a class="reference internal" href="past_intervals/#osdmap-trimming">OSDMap Trimming</a></li>
<li class="toctree-l2"><a class="reference internal" href="past_intervals/#back-to-pastintervals">Back to PastIntervals</a></li>
<li class="toctree-l2"><a class="reference internal" href="past_intervals/#osdsuperblock-maps">OSDSuperblock::maps</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="pg/">PG</a><ul>
<li class="toctree-l2"><a class="reference internal" href="pg/#concepts">Concepts</a></li>
<li class="toctree-l2"><a class="reference internal" href="pg/#peering-details-and-gotchas">Peering Details and Gotchas</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="pg_removal/">PG Removal</a></li>
<li class="toctree-l1"><a class="reference internal" href="pgpool/">PGPool</a></li>
<li class="toctree-l1"><a class="reference internal" href="recovery_reservation/">Recovery Reservation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="recovery_reservation/#dump-reservations">Dump Reservations</a></li>
<li class="toctree-l2"><a class="reference internal" href="recovery_reservation/#things-to-note">Things to Note</a></li>
<li class="toctree-l2"><a class="reference internal" href="recovery_reservation/#see-also">See Also</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="refcount/">Refcount</a><ul>
<li class="toctree-l2"><a class="reference internal" href="refcount/#introduction">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="refcount/#class-interface">Class Interface</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="scrub/">Scrub internals and diagnostics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="scrub/#scrubbing-behavior-table">Scrubbing Behavior Table</a></li>
<li class="toctree-l2"><a class="reference internal" href="scrub/#state-variables">State variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="scrub/#scrub-reservations">Scrub Reservations</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="snaps/">快照</a><ul>
<li class="toctree-l2"><a class="reference internal" href="snaps/#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="snaps/#ondisk-structures">Ondisk Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="snaps/#snap-removal">Snap Removal</a></li>
<li class="toctree-l2"><a class="reference internal" href="snaps/#recovery">Recovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="snaps/#snapmapper">SnapMapper</a></li>
<li class="toctree-l2"><a class="reference internal" href="snaps/#split">Split</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="stale_read/">Preventing Stale Reads</a><ul>
<li class="toctree-l2"><a class="reference internal" href="stale_read/#readable-until">readable_until</a></li>
<li class="toctree-l2"><a class="reference internal" href="stale_read/#prior-intervals">Prior Intervals</a></li>
<li class="toctree-l2"><a class="reference internal" href="stale_read/#pg-laggy-state">PG “laggy” state</a></li>
<li class="toctree-l2"><a class="reference internal" href="stale_read/#pg-wait-state">PG “wait” state</a></li>
<li class="toctree-l2"><a class="reference internal" href="stale_read/#dead-osds">Dead OSDs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="watch_notify/">关注通知</a><ul>
<li class="toctree-l2"><a class="reference internal" href="watch_notify/#overview">Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="watch_notify/#watch-lifecycle">Watch Lifecycle</a></li>
<li class="toctree-l2"><a class="reference internal" href="watch_notify/#notify-lifecycle">Notify Lifecycle</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="wbthrottle/">回写抑制</a></li>
</ul>
</div>
</section>



<div id="support-the-ceph-foundation" class="admonition note">
  <p class="first admonition-title">Brought to you by the Ceph Foundation</p>
  <p class="last">The Ceph Documentation is a community resource funded and hosted by the non-profit <a href="https://ceph.io/en/foundation/">Ceph Foundation</a>. If you would like to support this and our other efforts, please consider <a href="https://ceph.io/en/foundation/join/">joining now</a>.</p>
</div>


           </div>
           
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="../zoned-storage/" class="btn btn-neutral float-left" title="Zoned Storage Support" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="async_recovery/" class="btn btn-neutral float-right" title="异步恢复" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2016, Ceph authors and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0).</p>
  </div>

   

</footer>
        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>